import api from "@/apis/index.js";

let isRefreshing = true;
let subscribers = [];

function onAccessTokenFetched() {
	subscribers.forEach((callback) => {
		callback();
	})
	subscribers = [];
}

function addSubscriber(callback) {
	subscribers.push(callback)
}

export const requestNoTokenGET = (type, contentType, options) => {
	var data = options.data;
	var defaults = {
		url: options.url,
		method: "GET",
		data: data,
		responseType: "text",
		header: {
			// 中文返回
			// 'Accept-Language': 'zh-CN,zh;q=0.9',
			'content-type': contentType == 1 ? 'application/json' : 'application/x-www-form-urlencoded',
		},
		success: function(res) {},
		fail: function() {},
	};
	options = Object.assign({}, defaults, options);
	if (type == 1) {
		uni.showLoading({
			title: '加载中',
			mask: true
		})
	}
	return new Promise((resolve, reject) => {
		options.success = (res) => {
			if (res.errMsg == "request:ok") {
				// // 根据返回的 res.data 中的状态码处理，具体的返回数据结构对应处理
				// if (res.data.code == 0) {
				// 	resolve(res.data);
				// } else if (res.data.code == 401) {
				// 	// 401，重新登录获取token
				// } else {
				// 	reject(res.data);
				// }
				resolve(res.data);
			} else {
				uni.showToast({
					title: res.errMsg
				})
				reject(res);
			}
		};
		options.fail = (res) => {};
		options.complete = (res) => {
			// console.log("requestNoTokenGET -->" + JSON.stringify(res))
			uni.hideLoading();
		};
		uni.request(options);
	});
};

export const requestNoTokenDelete = (type, contentType, options) => {
	var data = options.data;
	var defaults = {
		url: options.url,
		method: "DELETE",
		data: data,
		responseType: "text",
		header: {
			// 中文返回
			// 'Accept-Language': 'zh-CN,zh;q=0.9',
			'content-type': contentType == 1 ? 'application/json' : 'application/x-www-form-urlencoded',
		},
		success: function(res) {},
		fail: function() {},
	};
	options = Object.assign({}, defaults, options);
	if (type == 1) {
		uni.showLoading({
			title: '加载中',
			mask: true
		})
	}
	return new Promise((resolve, reject) => {
		options.success = (res) => {
			if (res.errMsg == "request:ok") {
				// // 根据返回的 res.data 中的状态码处理，具体的返回数据结构对应处理
				// if (res.data.code == 0) {
				// 	resolve(res.data);
				// } else if (res.data.code == 401) {
				// 	// 401，重新登录获取token
				// } else {
				// 	reject(res.data);
				// }
				resolve(res.data);
			} else {
				uni.showToast({
					title: res.errMsg
				})
				reject(res);
			}
		};
		options.fail = (res) => {};
		options.complete = (res) => {
			// console.log("requestNoTokenDelete -->" + JSON.stringify(res))
			uni.hideLoading();
		};
		uni.request(options);
	});
};

export const requestNoTokenPut = (type, contentType, options) => {
	var data = options.data;
	var defaults = {
		url: options.url,
		method: "PUT",
		data: data,
		responseType: "text",
		header: {
			// 中文返回
			// 'Accept-Language': 'zh-CN,zh;q=0.9',
			'content-type': contentType == 1 ? 'application/json' : 'application/x-www-form-urlencoded',
		},
		success: function(res) {},
		fail: function() {},
	};
	options = Object.assign({}, defaults, options);
	if (type == 2) {
		uni.showLoading({
			title: '加载中',
			mask: true
		})
	}
	return new Promise((resolve, reject) => {
		options.success = (res) => {
			if (res.errMsg == "request:ok") {
				// // 根据返回的 res.data 中的状态码处理，具体的返回数据结构对应处理
				// if (res.data.code == 0) {
				// 	resolve(res.data);
				// } else if (res.data.code == 401) {
				// 	// 401，重新登录获取token
				// } else {
				// 	reject(res.data);
				// }
				resolve(res.data);
			} else {
				uni.showToast({
					title: res.errMsg
				})
				reject(res);
			}
		};
		options.fail = (res) => {};
		options.complete = (res) => {
			// console.log("requestNoTokenPUT -->" + JSON.stringify(res))
			if (type == 2) {
				uni.hideLoading();
			}
		};
		uni.request(options);
	});
};

export const requestNoTokenPOST = (type, contentType, options) => {
	var data = options.data;
	var defaults = {
		url: options.url,
		method: "POST",
		data: data,
		responseType: "text",
		header: {
			// 中文返回
			// 'Accept-Language': 'zh-CN,zh;q=0.9',
			'content-type': contentType == 1 ? 'application/json' : 'application/x-www-form-urlencoded',
		},
		success: function(res) {},
		fail: function() {},
	};
	options = Object.assign({}, defaults, options);
	if (type == 1) {
		uni.showLoading({
			title: '加载中',
			mask: true
		})
	}
	return new Promise((resolve, reject) => {
		options.success = (res) => {
			if (res.errMsg == "request:ok") {
				// // 根据返回的 res.data 中的状态码处理，具体的返回数据结构对应处理
				// if (res.data.code == 0) {
				// 	resolve(res.data);
				// } else if (res.data.code == 401) {
				// 	// 401，重新登录获取token
				// } else {
				// 	reject(res.data);
				// }
				resolve(res.data);
			} else {
				uni.showToast({
					title: res.errMsg
				})
				reject(res);
			}
		};
		options.fail = (res) => {};
		options.complete = (res) => {
			// console.log("requestNoTokenPOST -->" + JSON.stringify(res))
			uni.hideLoading();
		};
		uni.request(options);
	});
};
